<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>624. 数组列表中的最大距离</title>
</head>
<body>
  <script>
//     给定 m 个数组，每个数组都已经按照升序排好序了。

// 现在你需要从两个不同的数组中选择两个整数（每个数组选一个）并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b| 。

// 返回最大距离。

// 示例 1：

// 输入：[[1,2,3],[4,5],[1,2,3]]
// 输出：4
// 解释：
// 一种得到答案 4 的方法是从第一个数组或者第三个数组中选择 1，同时从第二个数组中选择 5 。
// 示例 2：

// 输入：arrays = [[1],[1]]
// 输出：0
 

// 提示：

// m == arrays.length
// 2 <= m <= 105
// 1 <= arrays[i].length <= 500
// -104 <= arrays[i][j] <= 104
// arrays[i] 以 升序 排序。
// 所有数组中最多有 105 个整数。

/**
 * @param {number[][]} arrays
 * @return {number}
 */
 var maxDistance = function(arrays) {
  let res = 0;
    let n = arrays[0].length;
    let minVal = arrays[0][0];
    let maxVal = arrays[0][n - 1];
    for (let i = 1; i < arrays.length; i++) {
        n = arrays[i].length;
        res = Math.max(res, Math.max(Math.abs(arrays[i][n - 1] - minVal), 
                                     Math.abs(maxVal - arrays[i][0])));
        minVal = Math.min(minVal, arrays[i][0]);
        maxVal = Math.max(maxVal, arrays[i][n - 1]);
    }
    return res;
  // let minObj = {}, minSecObj = {}, maxObj = {}, maxSecObj = {};
  // if (arrays[0][0] <= arrays[1][0]) {
  //   minObj = {
  //     val: arrays[0][0],
  //     index: 0
  //   }
  //   minSecObj = {
  //     val: arrays[1][0],
  //     index: 1
  //   }
  // } else {
  //   minObj = {
  //     val: arrays[1][0],
  //     index: 1
  //   }
  //   minSecObj = {
  //     val: arrays[0][0],
  //     index: 0
  //   }
  // }

  // if (arrays[0][arrays[0].length - 1] >= arrays[1][arrays[1].length - 1]) {
  //   maxObj = {
  //     val: arrays[0][arrays[0].length - 1],
  //     index: 0
  //   }
  //   maxSecObj = {
  //     val: arrays[1][arrays[0].length - 1],
  //     index: 1
  //   }
  // } else {
  //   maxObj = {
  //     val: arrays[1][arrays[1].length - 1],
  //     index: 1
  //   }
  //   maxSecObj = {
  //     val: arrays[0][arrays[1].length - 1],
  //     index: 0
  //   }
  // }
  //   for (let i = 2; i < arrays.length; i++) {
  //     if (arrays[i][0] <= minObj.val) {
  //       minSecObj = minObj;
  //       minObj = {
  //         val: arrays[i][0],
  //         index: i
  //       }
  //     } else if (arrays[i][0] <= minSecObj.val) {
  //       minSecObj = {
  //         val: arrays[i][0],
  //         index: i
  //       }
  //     }
  //     if (arrays[i][arrays[i].length - 1] >= maxObj.val) {
  //       maxSecObj = maxObj;
  //       maxObj = {
  //         val: arrays[i][arrays[i].length - 1],
  //         index: i
  //       }
  //     } else if (arrays[i][arrays[i].length - 1] >= maxSecObj.val) {
  //       maxSecObj= {
  //         val: arrays[i][arrays[i].length - 1],
  //         index: i
  //       }
  //     }
  //   }

  //   if (minObj.index === maxObj.index) {
  //     return Math.max(Math.abs(minObj.val - maxSecObj.val), Math.abs(minSecObj.val - maxObj.val))
  //   } else {
  //     return Math.abs(minObj.val - maxObj.val)
  //   }
  };
  </script>
</body>
</html>